package com.vdong.trade.trading.service;

import com.github.pagehelper.PageInfo;
import com.vdong.trade.trading.entity.dto.MerchantDetailDTO;
import com.vdong.trade.trading.entity.dto.MerchantRecordResultDTO;
import com.vdong.trade.trading.entity.dto.MerchantTotalListResultDTO;
import com.vdong.trade.trading.entity.dto.result.MerchantSettlementAllResultDTO;
import com.vdong.trade.trading.entity.dto.result.PusherSettlementAndCountResultDTO;
import com.vdong.trade.trading.entity.dto.result.SettlementAllEarningsResultDTO;
import com.vdong.trade.trading.entity.dto.result.SettlementDetailsEarningsResultDTO;
import com.vdong.trade.trading.entity.po.SettlementTotalParamDTO;
import com.vdong.trade.trading.entity.mo.MerchantDetailMO;
import com.vdong.trade.trading.entity.mo.MerchantRecordResultMO;
import com.vdong.trade.trading.entity.mo.MerchantTotalListResultMO;

/**
 * @author zhoulongbiao
 * @Date 2018/12/4 19:01
 */

public interface SettlementService {

    /**
     * 商户结算汇总
     *
     * @param param
     * @return
     */
    PageInfo<MerchantTotalListResultDTO> settlementTotalList(SettlementTotalParamDTO param);

    /**
     * 商户结算记录
     *
     * @param param
     * @return
     */
    PageInfo<MerchantRecordResultDTO> settlementRecord(SettlementTotalParamDTO param);

    /**
     * 商户结算详情
     *
     * @param param
     * @return
     */
    PageInfo<MerchantDetailDTO> settlementDetail(SettlementTotalParamDTO param);

    /**
     * 待结算，累计已结算
     *
     * @param param
     * @return
     */
    MerchantSettlementAllResultDTO settlementAll(SettlementTotalParamDTO param);

    /**
     * 累计订单交易额 累计收益 累计待结算 累计已结算
     *
     * @param param
     * @return
     */
    SettlementAllEarningsResultDTO settlementAllEarnings(SettlementTotalParamDTO param) throws Exception;

    /**
     * 结算金额  订单交易额 已付款订单数
     *
     * @param param
     * @return
     */
    SettlementDetailsEarningsResultDTO settlementDetailEarnings(SettlementTotalParamDTO param) throws Exception;

    /**
     * 推客总收益 累计已结算 分销数量
     *
     * @param param
     * @return
     */
    PusherSettlementAndCountResultDTO pusherSettlementAndCount(SettlementTotalParamDTO param);
}
